#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
标记模式区域模块
负责创建和管理标记模式选择区域的UI组件
"""

from PySide6.QtWidgets import QLabel, QVBoxLayout, QHBoxLayout, QGroupBox, QButtonGroup, QRadioButton
from PySide6.QtCore import Qt
from src.config import Config


class MarkModeArea:
    """标记模式区域类"""
    
    def __init__(self):
        """初始化标记模式区域"""
        self.mode_button_group = None
        self.keep_mode_radio = None
        self.delete_mode_radio = None
        
    def create_mark_mode_area(self, parent_layout):
        """
        创建标记模式选择区域
        
        创建用于选择片段标记模式的区域，包含保留模式和删除模式两个单选按钮。
        默认选择保留模式。使用QButtonGroup管理单选按钮的互斥选择。
        
        Args:
            parent_layout (QVBoxLayout): 父布局管理器，用于添加标记模式区域组件
            
        Returns:
            tuple: (mark_mode_group, mode_button_group, keep_mode_radio, delete_mode_radio) 
                   标记模式区域组、按钮组和两个单选按钮
        """
        mark_mode_group = QGroupBox(Config.MARK_MODE_GROUP_TITLE)
        mark_mode_layout = QHBoxLayout(mark_mode_group)
        
        # 模式选择标签
        mode_label = QLabel("选择标记模式:")
        mark_mode_layout.addWidget(mode_label)
        
        # 保留模式单选按钮
        self.keep_mode_radio = QRadioButton(Config.KEEP_MODE_TEXT)
        self.keep_mode_radio.setChecked(True)  # 默认选择保留模式
        
        # 删除模式单选按钮
        self.delete_mode_radio = QRadioButton(Config.DELETE_MODE_TEXT)
        
        # 使用QButtonGroup管理单选按钮
        self.mode_button_group = QButtonGroup()
        self.mode_button_group.addButton(self.keep_mode_radio, 0)  # ID 0表示保留模式
        self.mode_button_group.addButton(self.delete_mode_radio, 1)  # ID 1表示删除模式
        
        mark_mode_layout.addWidget(self.keep_mode_radio)
        mark_mode_layout.addWidget(self.delete_mode_radio)
        
        # 添加弹性空间
        mark_mode_layout.addStretch()
        
        parent_layout.addWidget(mark_mode_group)
        
        return mark_mode_group, self.mode_button_group, self.keep_mode_radio, self.delete_mode_radio